Skip to content
字数
1349 字
阅读时间
6 分钟

通过配置SSH密钥认证,您可以让VS Code在连接到远程服务器时无需每次都输入密码,从而实现无缝的开发体验。以下是详细的步骤:

核心概念:SSH密钥对

SSH密钥认证的核心在于使用一对密钥:一个私钥和一个公钥

  • 私钥:存储在您的本地计算机上,必须妥善保管,不能泄露。
  • 公钥:可以安全地共享,并需要放置在您希望连接的远程服务器上。

当您尝试连接时,VS Code会使用您的私钥来证明您的身份,远程服务器则会使用预先存放在那里的公钥进行验证。

操作步骤

第一步:在本地计算机上生成SSH密钥对

  1. 打开您本地计算机的终端(在Windows上可以是PowerShell、CMD或Git Bash;在macOS或Linux上是Terminal)。

  2. 运行以下命令来生成一个新的SSH密钥对:

    bash
    ssh-keygen -t ed25519 -C "your_email@example.com"
    • -t ed25519:指定使用Ed25519算法生成密钥,这是一种现代且安全的算法。如果您的系统不支持,可以使用 -t rsa -b 4096 来替代。
    • -C "your_email@example.com":这是一个可选的注释,通常用来标识密钥,您可以替换成您的邮箱地址。
  3. 在生成过程中,系统会询问您几个问题:

    • "Enter a file in which to save the key":直接按回车键接受默认路径即可。默认情况下,密钥会保存在用户主目录下的 .ssh 文件夹中(例如,Windows下的 C:\Users\YourUsername\.ssh,macOS和Linux下的 ~/.ssh)。
    • "Enter passphrase (empty for no passphrase)":直接按回车键设置一个空密码。这样在连接时就不需要输入额外的密码。如果您为了更高的安全性设置了密码,则需要配置ssh-agent来避免每次都输入。

    执行完毕后,您会在 .ssh 文件夹下看到两个文件:id_ed25519(私钥)和 id_ed25519.pub(公钥)。

第二步:将公钥复制到远程服务器

现在,您需要将本地生成的公钥 (id_ed25519.pub) 的内容添加到远程服务器的 ~/.ssh/authorized_keys 文件中。

方法一:使用 ssh-copy-id 命令(推荐,最简单)

如果您本地是macOS或Linux系统,或者Windows上安装了Git Bash,可以使用这个便捷的命令:

bash
ssh-copy-id user@hostname
  • user 替换为您在远程服务器上的用户名。
  • hostname 替换为远程服务器的IP地址或域名。

这个命令会自动将您的公钥追加到服务器的 authorized_keys 文件中,并设置正确的文件权限。

方法二:手动复制公钥

如果无法使用 ssh-copy-id,可以按照以下步骤手动操作:

  1. 在本地计算机上,复制公钥文件的内容。您可以使用以下命令在终端显示公钥内容,然后手动复制:

    • Windows (CMD/PowerShell):
      bash
      type $env:USERPROFILE\.ssh\id_ed25519.pub
    • macOS/Linux/Git Bash:
      bash
      cat ~/.ssh/id_ed25519.pub
  2. 通过密码登录到您的远程服务器。

  3. 在远程服务器上,执行以下命令,将您复制的公钥内容粘贴进去:

    bash
    mkdir -p ~/.ssh && chmod 700 ~/.ssh
    echo "粘贴您复制的公钥内容" >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    • mkdir -p ~/.ssh 确保 .ssh 目录存在。
    • chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys 是为了设置正确的目录和文件权限,这对于SSH认证至关重要。

第三步:配置VS Code的SSH

  1. 确保您已经在VS Code中安装了 Remote - SSH 插件。

  2. 按下 F1Ctrl+Shift+P 打开命令面板,输入并选择 "Remote-SSH: Open Configuration File..."

  3. 选择默认的配置文件路径(通常是 ~/.ssh/configC:\Users\YourUsername\.ssh\config)并打开它。

  4. 在配置文件中为您的服务器添加或修改一个条目,如下所示:

    Host my-server  # 您为服务器起的别名
      HostName your_server_ip_or_domain  # 服务器的IP地址或域名
      User your_username  # 您的用户名
      IdentityFile ~/.ssh/id_ed25519  # 您本地私钥的路径
    • Host:一个易于记忆的别名,之后您可以在VS Code中直接选择这个别名进行连接。
    • HostName:远程服务器的实际地址。
    • User:登录远程服务器所用的用户名。
    • IdentityFile:指定用于认证的私钥文件路径。请确保路径与您在第一步中生成的私钥路径一致。
  5. 保存并关闭配置文件。

第四步:连接到远程服务器

  1. 点击VS Code左下角的绿色远程连接图标。
  2. 在弹出的菜单中选择 "Connect to Host..."
  3. 您应该能看到您在配置文件中设置的主机别名(例如 my-server)。
  4. 选择该主机进行连接。

现在,VS Code应该会直接使用您的SSH密钥进行认证,而不会再提示您输入密码。 您已经成功实现了免密登录!

贡献者

页面历史